package com.toledo.salao.cliente;

import java.util.Date;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import com.toledo.salao.cidade.Cidade;
import com.toledo.salao.cidade.CidadeRN;
import com.toledo.salao.endereco.Endereco;
import com.toledo.salao.endereco.EnderecoRN;
import com.toledo.salao.estado.Estado;
import com.toledo.salao.estado.EstadoRN;
import com.toledo.salao.telefone.Telefone;
import com.toledo.salao.telefone.TelefoneRN;

@ManagedBean(name = "clienteBean")
@ViewScoped
public class ClienteBean {
	
	private Cliente clienteSelecionado = new Cliente();
	private Endereco enderecoSelecionado = new Endereco();
	private Telefone telefoneSelecionado = new Telefone();
	private Telefone telefoneSelecionado2 = new Telefone();
	private String comboSexo;
	private List<Cliente> lista = null;
	private List<Telefone> listaTelefone = null;
	private Estado estadoSelecionado = new Estado();
	private List<Cidade> listaCidadePorEstado = null;
	private Integer idEstadoSelecionado;

	

	

	public Integer getIdEstadoSelecionado() {
		return idEstadoSelecionado;
	}

	public void setIdEstadoSelecionado(Integer idEstadoSelecionado) {
		this.idEstadoSelecionado = idEstadoSelecionado;
	}

	public List<Cidade> getListaCidadePorEstado() {
		return listaCidadePorEstado;
	}

	public void setListaCidadePorEstado(List<Cidade> listaCidadePorEstado) {
		this.listaCidadePorEstado = listaCidadePorEstado;
	}

	public Estado getEstadoSelecionado() {
		return estadoSelecionado;
	}

	public void setEstadoSelecionado(Estado estadoSelecionado) {
		this.estadoSelecionado = estadoSelecionado;
	}

	public List<Telefone> getListaTelefone() {
		return listaTelefone;
	}

	public void setListaTelefone(List<Telefone> listaTelefone) {
		this.listaTelefone = listaTelefone;
	}

	public Telefone getTelefoneSelecionado() {
		if(this.telefoneSelecionado == null){
			this.telefoneSelecionado = new Telefone();
		}
		return telefoneSelecionado;
	}

	public void setTelefoneSelecionado(Telefone telefoneSelecionado) {
		this.telefoneSelecionado = telefoneSelecionado;
	}

	public Telefone getTelefoneSelecionado2() {
		if(this.telefoneSelecionado2 == null){
			this.telefoneSelecionado2 = new Telefone();
		}
		return telefoneSelecionado2;
	}

	public void setTelefoneSelecionado2(Telefone telefoneSelecionado2) {
		this.telefoneSelecionado2 = telefoneSelecionado2;
	}

	public Cliente getClienteSelecionado() {
		if (this.clienteSelecionado == null) {
			this.clienteSelecionado = new Cliente();
		}
		return clienteSelecionado;
	}

	public void setClienteSelecionado(Cliente clienteSelecionado) {
		this.clienteSelecionado = clienteSelecionado;
	}
	
	
	public List<Cliente> getLista() {
		ClienteRN clienteRN = new ClienteRN();
		if (lista == null) {
			lista = clienteRN.listar();

		}
		return lista;
	}

	public void setLista(List<Cliente> lista) {
		this.lista = lista;
	}

		
	public Endereco getEnderecoSelecionado() {
		if(this.enderecoSelecionado == null){
			this.enderecoSelecionado = new Endereco();
		}
		return enderecoSelecionado;
	}

	public void setEnderecoSelecionado(Endereco enderecoSelecionado) {
		this.enderecoSelecionado = enderecoSelecionado;
	}
	
	
	public void setComboSexo(String comboSexo){
		this.comboSexo = comboSexo;
	}
		
		
	public String getComboSexo(){
		return comboSexo;
	}
	
	public void salvar() {
		
		System.out.println("id pessoa salvar ");
		
		if (this.clienteSelecionado.getId_pessoa().equals(0)) { // erro vai ta aki dever ser null
						
			this.clienteSelecionado.setUltimo_acesso(new Date());
			this.clienteSelecionado.setSexo(this.getComboSexo());
			
			ClienteRN clienteRN = new ClienteRN();
			clienteRN.salvar(this.clienteSelecionado);
			
			
			EnderecoRN enderecoRN = new EnderecoRN();
			this.enderecoSelecionado.setPessoa(this.clienteSelecionado);
			enderecoRN.salvar(this.enderecoSelecionado);
			
			TelefoneRN telefoneRN = new TelefoneRN();
			this.telefoneSelecionado.setPessoa(this.clienteSelecionado);
			this.telefoneSelecionado2.setPessoa(this.clienteSelecionado);
			telefoneRN.salvar(this.telefoneSelecionado);
			telefoneRN.salvar(this.telefoneSelecionado2);
			
		
			FacesMessage faces = new FacesMessage("Usuario cadastrado com sucesso!");
			FacesContext contexto = FacesContext.getCurrentInstance();
			contexto.addMessage(null, faces);
			
			this.listaTelefone = null;
			this.lista = null;
			this.setClienteSelecionado(null);
			this.setEnderecoSelecionado(null);
			this.setTelefoneSelecionado(null);
			this.setTelefoneSelecionado2(null);
			this.setEstadoSelecionado(null);
			this.setComboSexo("");
			this.setIdEstadoSelecionado(null);
		} else {
			alterar();
		}
	
	}
	


	public void excluir() {
		
		TelefoneRN telefoneRN = new TelefoneRN();
		this.telefoneSelecionado.setPessoa(null);
		this.telefoneSelecionado2.setPessoa(null);
		telefoneRN.excluir(this.telefoneSelecionado);
		telefoneRN.excluir(this.telefoneSelecionado2);
		
		EnderecoRN enderecoRN = new EnderecoRN();
		this.enderecoSelecionado.setPessoa(null);
		this.enderecoSelecionado.setCidade(null);
		enderecoRN.excluir(this.enderecoSelecionado);
		
		ClienteRN clienteRN = new ClienteRN();
		clienteRN.excluir(this.clienteSelecionado);
		
		FacesMessage faces = new FacesMessage("Usuario Excluido com sucesso!");
		FacesContext contexto = FacesContext.getCurrentInstance();
		contexto.addMessage(null, faces);
		
		this.listaTelefone = null;
		this.lista = null;
		this.setClienteSelecionado(null);
		this.setEnderecoSelecionado(null);
		this.setTelefoneSelecionado(null);
		this.setTelefoneSelecionado2(null);
		this.setEstadoSelecionado(null);
		this.setComboSexo("");
		this.setIdEstadoSelecionado(null);
	}
	
	public void alterar() {

		System.out.println("id pessoa alterar "+ this.clienteSelecionado.getId_pessoa());

		this.clienteSelecionado.setUltimo_acesso(new Date());
		this.clienteSelecionado.setSexo(this.getComboSexo());
		
		ClienteRN clienteRN = new ClienteRN();
		clienteRN.alterar(this.clienteSelecionado);
		
		EnderecoRN enderecoRN = new EnderecoRN();
		this.enderecoSelecionado.setPessoa(this.clienteSelecionado);
		enderecoRN.alterar(this.enderecoSelecionado);
		
		TelefoneRN telefoneRN = new TelefoneRN();
		this.telefoneSelecionado.setPessoa(this.clienteSelecionado);
		this.telefoneSelecionado2.setPessoa(this.clienteSelecionado);
		telefoneRN.alterar(this.telefoneSelecionado);
		
		if(this.telefoneSelecionado2.equals(null)){
			telefoneRN.salvar(this.telefoneSelecionado2);
		}else{
			telefoneRN.alterar(this.telefoneSelecionado2);
		}
	
		FacesMessage faces = new FacesMessage("Usuario Alterado com sucesso!");
		FacesContext contexto = FacesContext.getCurrentInstance();
		contexto.addMessage(null, faces);
		
		this.listaTelefone = null;
		this.lista = null;
		this.setClienteSelecionado(null);
		this.setEnderecoSelecionado(null);
		this.setTelefoneSelecionado(null);
		this.setTelefoneSelecionado2(null);
		this.setEstadoSelecionado(null);
		this.setComboSexo("");
		this.setIdEstadoSelecionado(null);
	}
	
	

public void populaCampos(){
	
	EnderecoRN enderecoRN = new EnderecoRN();
	TelefoneRN telefoneRN = new TelefoneRN();

	this.setListaTelefone(telefoneRN.listarPorPessoa(this.clienteSelecionado.getId_pessoa()));
	
	this.setTelefoneSelecionado(this.listaTelefone.get(0));
	this.setTelefoneSelecionado2(this.listaTelefone.get(1));
	
	System.out.println("tel 1 da lista: "+this.listaTelefone.get(0).getNumero_telefone());	
	System.out.println("tel 2 da lista: "+this.listaTelefone.get(1).getNumero_telefone());	
	
	System.out.println("tel 1 do obj: "+this.telefoneSelecionado.getNumero_telefone());	
	System.out.println("tel 2 do obj: "+this.telefoneSelecionado2.getNumero_telefone());	
	

	this.setEnderecoSelecionado(enderecoRN.pesquisarPorPessoa(this.clienteSelecionado.getId_pessoa()));
	this.setEstadoSelecionado(this.enderecoSelecionado.getCidade().getEstado());
	this.setComboSexo(this.enderecoSelecionado.getPessoa().getSexo());
	this.setIdEstadoSelecionado(this.estadoSelecionado.getId_estado());
	
	CidadeRN cidadeRN = new CidadeRN();
	this.setListaCidadePorEstado(cidadeRN.listarCidadePorEstado(this.estadoSelecionado.getId_estado()));

	System.out.println("teste end: "+this.enderecoSelecionado.getCidade().getEstado().getNome_estado());	
	System.out.println("teste end: "+this.enderecoSelecionado.getCidade().getEstado().getNome_estado());	
	System.out.println("teste senha: "+this.clienteSelecionado.getSenha());	

	}

public void listarCidadePorEstado(){
	
	System.out.println("oloko meu: ");
	if(this.idEstadoSelecionado.equals(null)){
		this.setListaCidadePorEstado(null);
	}else{
	CidadeRN cidadeRN = new CidadeRN();
	this.setListaCidadePorEstado(cidadeRN.listarCidadePorEstado(this.idEstadoSelecionado));
	}
	
	}

}
